package com.meida.module.system.provider.service;

import com.meida.common.mybatis.model.ResultBody;
import com.meida.common.mybatis.base.service.IBaseService;
import com.meida.common.mybatis.entity.EntityMap;
import com.meida.module.system.client.entity.SysCollecon;
import com.meida.module.system.client.enums.ColleconEnum;

import java.util.List;

/**
 * 收藏点赞关注表 服务类
 *
 * @author flyme
 * @date 2019-06-13
 */
public interface SysColleconService extends IBaseService<SysCollecon> {
    /**
     * 查找用户收藏关注记录
     */
    SysCollecon findCollecon(Long targetId, Long userId, ColleconEnum colleconEnum, String entityName);

    /**
     * 用户收藏关注
     */
    ResultBody collecon(Long targetId, ColleconEnum colleconEnum, String entityName, Long[] groupIds);

    /**
     * 批量设置分组
     */
    Boolean setGroup(Long[] colleconIds, Long[] groupIds);

    /**
     * 查找是否有记录
     */
    Integer countCollecon(Long targetId, ColleconEnum colleconEnum, Class cls);


    /**
     * 统计某个对象收藏记录
     */
    Integer countAllCollecon(Long targetId, ColleconEnum colleconEnum, Class cls);

    /**
     * 统计企业被收藏数量
     */
    Integer countCountByTargetCompany(Long targetCompanyId, ColleconEnum colleconEnum, Class cls);

    /**
     * 统计某用户收藏数量
     */
    Integer countCountByUser(Long userId, ColleconEnum colleconEnum, Class cls);

    /**
     * 查询企业热门收藏产品排行
     *
     * @param companyId
     * @param limit
     * @return
     */
    List<EntityMap> selectColleconProductByCompanyId(Long companyId, int limit);

    ResultBody totalByTargetEntity();

}
